package cn.rokhdelar.ams.management.service.impl;

import cn.rokhdelar.ams.common.domain.vo.PageVO;
import cn.rokhdelar.ams.management.domain.po.SysLoginLog;
import cn.rokhdelar.ams.management.domain.query.LoginLogQuery;
import cn.rokhdelar.ams.management.domain.vo.LoginLogVO;
import cn.rokhdelar.ams.management.mapper.SysLoginLogMapper;
import cn.rokhdelar.ams.management.service.SysLoginLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * @author Rokhdelar
 * @since 2025/3/21 -- 17:18
 **/
@Service
public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements SysLoginLogService {

    /**
     * 获取登录日志列表
     * @param query 查询条件实体对象
     * @return 登录日志列表分页信息实体对象
     */
    @Override
    public PageVO<LoginLogVO> getLoginLogs(LoginLogQuery query) {
        Page<SysLoginLog> page = query.toPageDefaultSortByCreateTime();

        Page<SysLoginLog> loginLogPage = lambdaQuery()
                .like(query.getUsername() != null, SysLoginLog::getUsername, query.getUsername())
                .between(query.getStartTime() != null && query.getEndTime() != null, SysLoginLog::getLoginTime, query.getStartTime(), query.getEndTime())
                .eq(query.getStatus() != null, SysLoginLog::getStatus, query.getStatus())
                .page(page);

        return PageVO.of(loginLogPage, LoginLogVO.class);
    }
}
